package ifi.p17.thai_cisse;

import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;

import static junit.framework.Assert.assertEquals;

/**
 * Created with IntelliJ IDEA.
 * User: thainh
 * Date: 12/10/12
 * Time: 1:23 PM
 * To change this template use File | Settings | File Templates.
 */
public class CarnetTableModelTest extends TestCase {
    Personne p1 = new Personne("Thai","0974939933","l'IFI 42 Ta Quang Buu","Ha Dong");
    Personne p2 = new Personne("Nguyen Bach","0974721632","Viet Uc - Van Quan","Xa la, Ha Dong");
    Personne p3 = new Personne("Nhat","0904368683","FSoft","CT4A");
    Personne p4 = new Personne("Cisse","09043623623","L'IFI","Hai Ba Trung");
    Personne p4i;

    ArrayList<Personne> listPerson = new ArrayList<Personne>();

    CarnetTableModel carnetTableModel;

    @Before
    public void setUp() throws Exception {
        listPerson.add(p1);
        listPerson.add(p2);
        listPerson.add(p3);
        ArrayList<Personne> personneArrayList = new ArrayList<Personne>(listPerson);
        carnetTableModel = new CarnetTableModel(personneArrayList);
        p4i = new Personne(p4.getNom(),p4.getNumeroDeTelephone(),p4.getAdresseDeTraivail(), p4.getAdresseDeDomicile());
    }

    @After
    public void tearDown() throws Exception {

    }
    @Test
    public void testGetData() throws Exception {
        assertEquals(listPerson,carnetTableModel.getData());
    }

    @Test
    public void testResetData() throws Exception {
        carnetTableModel.resetData();
        assertEquals(0,carnetTableModel.getData().size());
    }

    @Test
    public void testAddCarte() throws Exception {
        carnetTableModel.addCarte(p4i);
        assertEquals("Ajouter n'est pas succès parce-que le nom est diferent",p4.getNom(),carnetTableModel.getData().get(3).getNom());
        assertEquals("Ajouter n'est pas succès parce-que numero de telephone est diferent ",p4.getNumeroDeTelephone(),carnetTableModel.getData().get(3).getNumeroDeTelephone());
        assertEquals("Ajouter n'est pas succès parce-que adressse de travail est diferent ",p4.getAdresseDeTraivail(),carnetTableModel.getData().get(3).getAdresseDeTraivail());
        assertEquals("Ajouter n'est pas succès parce-que adresse de domicile est diferent ",p4.getAdresseDeDomicile(),carnetTableModel.getData().get(3).getAdresseDeDomicile());
    }

    @Test
    public void testEditCarte() throws Exception {
        carnetTableModel.editCarte(p4i, 2);
        assertEquals("Editer n'est pas succès parce-que le nom est diferent",p4.getNom(),carnetTableModel.getData().get(2).getNom());
        assertEquals("Editer n'est pas succès parce-que numero de telephone est diferent ",p4.getNumeroDeTelephone(),carnetTableModel.getData().get(2).getNumeroDeTelephone());
        assertEquals("Editer n'est pas succès parce-que adressse de travail est diferent ",p4.getAdresseDeTraivail(),carnetTableModel.getData().get(2).getAdresseDeTraivail());
        assertEquals("Editer n'est pas succès parce-que adresse de domicile est diferent ",p4.getAdresseDeDomicile(),carnetTableModel.getData().get(2).getAdresseDeDomicile());
    }

    @Test
    public void testDeleteCarte() throws Exception {
        carnetTableModel.deleteCarte(2);
        assertEquals("Supprimer n'est pas succès parce-que la taille est la diminution",2, carnetTableModel.getRowCount());
    }

    @Test
    public void testsearchByName() throws Exception {
        carnetTableModel.searchByName("Thai");
        assertEquals("SeachName n'est pas succès","Nguyen Bach", carnetTableModel.getData().get(1).getNom());
    }

    @Test
    public void testGetValueAt() throws Exception {
        assertEquals("getValueAt a result pas exactement","Nguyen Bach", carnetTableModel.getValueAt(1,0));
    }
}
